home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Chat & Communication / Digsby build 37 / digsby_setup.exe / lib / M2Crypto / DSA.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-13  |  7KB  |  195 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. import sys
  5. import util
  6. import BIO
  7. import m2
  8.  
  9. class DSAError(Exception):
  10.     pass
  11.  
  12. m2.dsa_init(DSAError)
  13.  
  14. class DSA:
  15.     m2_dsa_free = m2.dsa_free
  16.     
  17.     def __init__(self, dsa, _pyfree = 0):
  18.         self.dsa = dsa
  19.         self._pyfree = _pyfree
  20.  
  21.     
  22.     def __del__(self):
  23.         if getattr(self, '_pyfree', 0):
  24.             self.m2_dsa_free(self.dsa)
  25.         
  26.  
  27.     
  28.     def __len__(self):
  29.         return m2.dsa_keylen(self.dsa)
  30.  
  31.     
  32.     def __getattr__(self, name):
  33.         if name in ('p', 'q', 'g', 'pub', 'priv'):
  34.             method = getattr(m2, 'dsa_get_%s' % (name,))
  35.             return method(self.dsa)
  36.         else:
  37.             raise AttributeError
  38.  
  39.     
  40.     def __setattr__(self, name, value):
  41.         if name in ('p', 'q', 'g'):
  42.             raise DSAError('set (p, q, g) via set_params()')
  43.         elif name in ('pub', 'priv'):
  44.             raise DSAError('generate (pub, priv) via gen_key()')
  45.         else:
  46.             self.__dict__[name] = value
  47.  
  48.     
  49.     def set_params(self, p, q, g):
  50.         m2.dsa_set_p(self.dsa, p)
  51.         m2.dsa_set_q(self.dsa, q)
  52.         m2.dsa_set_g(self.dsa, g)
  53.  
  54.     
  55.     def gen_key(self):
  56.         m2.dsa_gen_key(self.dsa)
  57.  
  58.     
  59.     def save_params(self, filename):
  60.         bio = BIO.openfile(filename, 'wb')
  61.         ret = m2.dsa_write_params_bio(self.dsa, bio._ptr())
  62.         bio.close()
  63.         return ret
  64.  
  65.     
  66.     def save_params_bio(self, bio):
  67.         return m2.dsa_write_params_bio(self.dsa, bio._ptr())
  68.  
  69.     
  70.     def save_key(self, filename, cipher = 'aes_128_cbc', callback = util.passphrase_callback):
  71.         bio = BIO.openfile(filename, 'wb')
  72.         ret = self.save_key_bio(bio, cipher, callback)
  73.         bio.close()
  74.         return ret
  75.  
  76.     
  77.     def save_key_bio(self, bio, cipher = 'aes_128_cbc', callback = util.passphrase_callback):
  78.         if cipher is None:
  79.             return m2.dsa_write_key_bio_no_cipher(self.dsa, bio._ptr(), callback)
  80.         else:
  81.             ciph = getattr(m2, cipher, None)
  82.             if ciph is None:
  83.                 raise DSAError('no such cipher: %s' % cipher)
  84.             else:
  85.                 ciph = ciph()
  86.             return m2.dsa_write_key_bio(self.dsa, bio._ptr(), ciph, callback)
  87.  
  88.     
  89.     def save_pub_key(self, filename):
  90.         bio = BIO.openfile(filename, 'wb')
  91.         ret = self.save_pub_key_bio(bio)
  92.         bio.close()
  93.         return ret
  94.  
  95.     
  96.     def save_pub_key_bio(self, bio):
  97.         return m2.dsa_write_pub_key_bio(self.dsa, bio._ptr())
  98.  
  99.     
  100.     def sign(self, digest):
  101.         return m2.dsa_sign(self.dsa, digest)
  102.  
  103.     
  104.     def verify(self, digest, r, s):
  105.         return m2.dsa_verify(self.dsa, digest, r, s)
  106.  
  107.     
  108.     def sign_asn1(self, digest):
  109.         return m2.dsa_sign_asn1(self.dsa, digest)
  110.  
  111.     
  112.     def verify_asn1(self, digest, blob):
  113.         return m2.dsa_verify_asn1(self.dsa, digest, blob)
  114.  
  115.     
  116.     def check_key(self):
  117.         return m2.dsa_check_key(self.dsa)
  118.  
  119.  
  120.  
  121. class DSA_pub(DSA):
  122.     
  123.     def sign(self, *argv):
  124.         raise DSAError('DSA_pub object has no private key')
  125.  
  126.     sign_asn1 = sign
  127.     
  128.     def check_key(self):
  129.         return m2.dsa_check_pub_key(self.dsa)
  130.  
  131.     save_key = DSA.save_pub_key
  132.     save_key_bio = DSA.save_pub_key_bio
  133.  
  134.  
  135. def gen_params(bits, callback = util.genparam_callback):
  136.     dsa = m2.dsa_generate_parameters(bits, callback)
  137.     if dsa is None:
  138.         raise DSAError('problem generating DSA parameters')
  139.     
  140.     return DSA(dsa, 1)
  141.  
  142.  
  143. def set_params(p, q, g):
  144.     dsa = m2.dsa_new()
  145.     m2.dsa_set_p(dsa, p)
  146.     m2.dsa_set_q(dsa, q)
  147.     m2.dsa_set_g(dsa, g)
  148.     return DSA(dsa, 1)
  149.  
  150.  
  151. def load_params(file, callback = util.passphrase_callback):
  152.     bio = BIO.openfile(file)
  153.     ret = load_params_bio(bio, callback)
  154.     bio.close()
  155.     return ret
  156.  
  157.  
  158. def load_params_bio(bio, callback = util.passphrase_callback):
  159.     dsa = m2.dsa_read_params(bio._ptr(), callback)
  160.     if dsa is None:
  161.         raise DSAError('problem loading DSA parameters')
  162.     
  163.     return DSA(dsa, 1)
  164.  
  165.  
  166. def load_key(file, callback = util.passphrase_callback):
  167.     bio = BIO.openfile(file)
  168.     ret = load_key_bio(bio, callback)
  169.     bio.close()
  170.     return ret
  171.  
  172.  
  173. def load_key_bio(bio, callback = util.passphrase_callback):
  174.     dsa = m2.dsa_read_key(bio._ptr(), callback)
  175.     if not dsa:
  176.         raise DSAError('problem loading DSA key pair')
  177.     
  178.     return DSA(dsa, 1)
  179.  
  180.  
  181. def load_pub_key(file, callback = util.passphrase_callback):
  182.     bio = BIO.openfile(file)
  183.     ret = load_pub_key_bio(bio, callback)
  184.     bio.close()
  185.     return ret
  186.  
  187.  
  188. def load_pub_key_bio(bio, callback = util.passphrase_callback):
  189.     dsapub = m2.dsa_read_pub_key(bio._ptr(), callback)
  190.     if not dsapub:
  191.         raise DSAError('problem loading DSA public key')
  192.     
  193.     return DSA_pub(dsapub, 1)
  194.  
  195.